#ifndef _DEFTRACK_CTRACKER_H_
#define _DEFTRACK_CTRACKER_H_

#include <buola/mat.h>

#include "ctrackedobject.h"

namespace buola { namespace tracker {

class CTracker
{
public:
    CTracker(int K);
    void SetFeatures(mat::CMat_f &&pObject,mat::CMat_f &&pObserved);
    void ExpectationStep(const CTrackedObject &pRope);
    void MaximizationStep(CTrackedObject &pRope);
    
private:
    mat::CMat_f mObject;
    mat::CMat_f mObserved;
    mat::CMat_f mStdDev;
    mat::CVec_f mVis;
    mat::CMat_f mPZGivenC;
    mat::CVec_f mPriorDist;
    mat::CVec_f mOutlierDist;
    mat::CVec_f mOutlierStdDev;
};

/*namespace tracker*/ } /*namespace buola*/ }

#endif
